home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 42
/
Amiga Format AFCD42 (Issue 126, Aug 1999).iso
/
-serious-
/
comms
/
other
/
micq-0.4.0
/
file_util.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-05-14
|
22KB
|
631 lines
#include "micq.h"
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <assert.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <fcntl.h>
#ifdef _WIN32
#include <io.h>
#define S_IRUSR _S_IREAD
#define S_IWUSR _S_IWRITE
#endif
#ifdef UNIX
#include <unistd.h>
#include <termios.h>
#endif
#ifdef UNIX
char *strdup( const char * );
int strcasecmp( const char *, const char * );
int strncasecmp( const char *, const char *, size_t );
#endif
#ifdef __SASC
#include <proto/dos.h>
#endif
#define ADD_COMMAND(a, b) else if ( ! strcasecmp( tmp, a) ) \
{ \
strncpy( b,strtok(NULL," \n\t"), 16 ); \
}
#define ADD_MESS(a, b) else if ( ! strcasecmp( tmp, a) ) \
{ \
strncpy( b,strtok(NULL,"\n"), 450 ); \
}
static char rcfile[256];
static void Initalize_RC_File( void )
{
FD_T rcf;
char passwd2[ sizeof(passwd) ];
strcpy( server, "icq1.mirabilis.com" );
remote_port = 4000;
M_print( "Enter UIN or 0 for new UIN: #" );
fflush( stdout );
scanf( "%ld", &UIN );
password_entry:
M_print( "Enter password : " );
fflush( stdout );
Echo_Off();
memset( passwd, 0, sizeof( passwd ) );
M_fdnreadln(STDIN, passwd, sizeof(passwd));
Echo_On();
if ( UIN == 0 )
{
if ( 0 == passwd[0] )
{
M_print( "\nMust enter password!\n" );
goto password_entry;
}
M_print( "\nReenter password to verify: " );
fflush( stdout );
Echo_Off();
memset( passwd2, 0, sizeof( passwd2 ) );
M_fdnreadln(STDIN, passwd2, sizeof(passwd));
Echo_On();
if ( strcmp( passwd, passwd2 ) )
{
M_print( "\nPasswords did not match reenter\n" );
goto password_entry;
}
Init_New_User();
}
set_status = STATUS_ONLINE;
Num_Contacts = 2;
Contacts[ 0 ].vis_list = FALSE;
Contacts[ 1 ].vis_list = FALSE;
Contacts[0].uin = 11290140;
strcpy( Contacts[0].nick, "Micq Author" );
Contacts[0].status = STATUS_OFFLINE;
Contacts[0].last_time = -1L;
Contacts[0].current_ip[0] = 0xff;
Contacts[0].current_ip[1] = 0xff;
Contacts[0].current_ip[2] = 0xff;
Contacts[0].current_ip[3] = 0xff;
Contacts[ 0 ].port = 0;
Contacts[ 0 ].sok = (SOK_T ) -1L;
Contacts[1].uin = -11290140;
strcpy( Contacts[1].nick, "alias1" );
Contacts[1].status = STATUS_OFFLINE;
Contacts[1].current_ip[0] = 0xff;
Contacts[1].current_ip[1] = 0xff;
Contacts[1].current_ip[2] = 0xff;
Contacts[1].current_ip[3] = 0xff;
Contacts[1].current_ip[0] = 0xff;
Contacts[1].current_ip[1] = 0xff;
Contacts[1].current_ip[2] = 0xff;
Contacts[1].current_ip[3] = 0xff;
Contacts[ 1 ].port = 0;
Contacts[ 1 ].sok = (SOK_T ) -1L;
strcpy(message_cmd, "msg");
strcpy(info_cmd, "info");
strcpy(add_cmd, "add");
strcpy(quit_cmd, "q");
strcpy(reply_cmd, "r");
strcpy(again_cmd, "a");
strcpy(list_cmd, "w");
strcpy(away_cmd, "away");
strcpy(na_cmd, "na");
strcpy(dnd_cmd, "dnd");
strcpy(online_cmd, "online");
strcpy(occ_cmd, "occ");
strcpy(ffc_cmd, "ffc");
strcpy(inv_cmd, "inv");
strcpy(status_cmd, "status");
strcpy(auth_cmd, "auth");
strcpy(change_cmd, "change");
strcpy(auto_cmd, "auto");
strcpy(search_cmd, "search");
strcpy(save_cmd, "save");
strcpy(alter_cmd, "alter");
strcpy(msga_cmd, "msga");
strcpy(url_cmd, "url");
strcpy(update_cmd, "update");
Current_Status = STATUS_ONLINE;
rcf = open( rcfile, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
if ( rcf == -1 )
{
perror( "Error creating config file " );
exit( 1);
}
close( rcf );
if ( Save_RC() == -1 )
{
perror( "Error creating config file " );
exit( 1);
}
}
static void Read_RC_File( FD_T rcf )
{
char buf[450];
char *tmp;
int i;
DWORD tmp_uin;
message_cmd[0]='\0';/* for error checking later */
quit_cmd[0]='\0'; /* for error checking later */
info_cmd[0]='\0'; /* for error checking later */
reply_cmd[0]='\0'; /* for error checking later */
again_cmd[0]='\0'; /* for error checking later */
add_cmd[0]='\0'; /* for error checking later */
list_cmd[0]='\0'; /* for error checking later */
away_cmd[0]='\0'; /* for error checking later */
na_cmd[0]='\0'; /* for error checking later */
dnd_cmd[0]='\0'; /* for error checking later */
online_cmd[0]='\0'; /* for error checking later */
occ_cmd[0]='\0'; /* for error checking later */
ffc_cmd[0]='\0'; /* for error checking later */
inv_cmd[0]='\0'; /* for error checking later */
status_cmd[0]='\0'; /* for error checking later */
auth_cmd[0]='\0'; /* for error checking later */
auto_cmd[0]='\0'; /* for error checking later */
change_cmd[0]='\0'; /* for error checking later */
search_cmd[0]='\0'; /* for error checking later */
save_cmd[0]='\0'; /* for error checking later */
alter_cmd[0]='\0'; /* for error checking later */
msga_cmd[0]='\0'; /* for error checking later */
url_cmd[0]='\0'; /* for error checking later */
update_cmd[0]='\0'; /* for error checking later */
sound_cmd[0]='\0'; /* for error checking later */
color_cmd[0]='\0'; /* for error checking later */
rand_cmd[0]='\0'; /* for error checking later */
Sound_Str[0]='\0'; /* for error checking later */
passwd[0] = 0;
UIN = 0;
Contact_List = FALSE;
for ( i=1; !Contact_List || buf == 0; i++ )
{
/* M_print( "Starting Line " SERVCOL " %d" NOCOL "\n", i );*/
M_fdnreadln( rcf, buf, sizeof( buf ) );
if ( ( buf[0] != '#' ) && ( buf[0] != 0 ) )
{
tmp = strtok( buf, " " );
if ( ! strcasecmp( tmp, "Server" ) )
{ strcpy( server, strtok( NULL, " \n\t" ) ); }
else if ( ! strcasecmp( tmp, "Password" ) )
{ strcpy( passwd, strtok( NULL, "\n\t" ) ); }
else if ( ! strcasecmp( tmp, "Russian" ) )
{ Russian = TRUE; }
else if ( ! strcasecmp( tmp, "No_Log" ) )
{ Logging = FALSE; }
else if ( ! strcasecmp( tmp, "No_Color" ) )
{ Color = FALSE; }
else if ( ! strcasecmp( tmp, "UIN" ) )
{ UIN = atoi( strtok( NULL, " \n\t" ) ); }
else if ( ! strcasecmp( tmp, "port" ) )
{ remote_port = atoi( strtok( NULL, " \n\t" ) ); }
else if ( ! strcasecmp( tmp, "Status" ) )
{ set_status = atoi( strtok( NULL, " \n\t" ) ); }
else if ( ! strcasecmp( tmp, "Auto" ) )
{ auto_resp = TRUE; }
ADD_COMMAND( "message_cmd", message_cmd )
ADD_COMMAND( "info_cmd", info_cmd )
ADD_COMMAND( "rand_cmd", rand_cmd )
ADD_COMMAND( "color_cmd", color_cmd )
ADD_COMMAND( "sound_cmd", sound_cmd )
ADD_COMMAND( "quit_cmd", quit_cmd )
ADD_COMMAND( "reply_cmd", reply_cmd )
ADD_COMMAND( "again_cmd", again_cmd )
ADD_COMMAND( "list_cmd", list_cmd )
ADD_COMMAND( "away_cmd", away_cmd )
ADD_MESS( "auto_rep_str_away", auto_rep_str_away )
ADD_MESS( "auto_rep_str_na", auto_rep_str_na )
ADD_COMMAND( "na_cmd", na_cmd )
ADD_COMMAND( "dnd_cmd", dnd_cmd )
ADD_MESS( "auto_rep_str_dnd", auto_rep_str_dnd )
ADD_MESS( "auto_rep_str_occ", auto_rep_str_occ )
ADD_MESS( "auto_rep_str_inv", auto_rep_str_inv )
else if ( ! strcasecmp( tmp, "Sound" ) ) {
strcpy( Sound_Str, strtok( NULL, "\n\t" ) );
Sound = SOUND_CMD;
}
ADD_COMMAND( "online_cmd", online_cmd )
ADD_COMMAND( "occ_cmd", occ_cmd )
ADD_COMMAND( "ffc_cmd", ffc_cmd )